#include <iostream>
using std::cout;
using std::endl;

struct FFF{
    void print(int x){
        cout << "print(int):" << x << endl;
    }


    void display(int x){
        cout << "display(int):" << x << endl;
    }
};

//这是一个成员函数指针类
//只能指向FFF类的、返回void、参数一个int的成员函数
typedef void (FFF::*MemberFunction)(int);

void test0(){
    FFF fff;
    MemberFunction fo = &FFF::print;
    //.*是成员函数指针访问运算符的第一种方式
    //指针这个概念指的是右操作数
    (fff.*fo)(100);
}

void test1(){
    FFF * fp = new FFF;
    MemberFunction fo = &FFF::display;

    //->*是成员函数指针访问运算符的第二种方式
    //指针这个概念指的是右操作数（虽然此时左操作数也是指针）
    (fp->*fo)(200);
    
}

int main(void){
    test0();
    return 0;
}
